The present invention pertains to the field of computer systems. More particularly, this invention pertains to the field of dynamically changing computer system configuration to improve application performance.
Different types of computer software applications use computer system components in different ways. For example, 3D graphics applications feature significant concurrent traffic to main memory from both the graphics controller and the processor. Business applications may result in a great deal of processor to main memory traffic. Some applications may feature excellent main memory locality while others may result in poor main memory locality.
Designers of prior computer systems have sought to produce computer systems that work acceptably well for all applications. In doing so, design choices are made that result in computer systems that are not optimized for any particular software application.
Some prior computer system components have programmable features that allow some amount of customization. However, these features are typically programmed during the computer system boot-up process. Once the computer system component features are programmed at boot-up time, the computer system configuration remains unchanged during computer system operation.